import axios from 'axios';
import router from '@/router';

// 创建 axios 实例
const request = axios.create({
  baseURL: 'http://localhost:9090', // 后端接口基础路径
  timeout: 10000 // 请求超时时间
});

// 请求拦截器 - 确保每个请求都携带 token
request.interceptors.request.use(
  config => {
    // 从 localStorage 获取用户信息
    const userStr = localStorage.getItem('user');
    if (userStr) {
      const user = JSON.parse(userStr);
      if (user && user.token) {
        // 设置 token 到请求头
        config.headers['Authorization'] = 'Bearer ' + user.token;
      }
    }
    return config;
  },
  error => {
    console.error('请求拦截器错误:', error);
    return Promise.reject(error);
  }
);

request.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    if (error.response) {
      // token 过期或无效
      if (error.response.status === 401) {
        console.log('Token过期或无效，需要重新登录');
        
        // 清除本地存储
        localStorage.removeItem('user');
        
        // 如果不是登录页面，重定向到登录页
        if (router.currentRoute.path !== '/login') {
          router.push({
            path: '/login',
            query: { redirect: router.currentRoute.fullPath }
          });
          
          // 使用 Element UI 的消息提示（如果有）
          if (Vue.prototype.$message) {
            Vue.prototype.$message.error('登录已过期，请重新登录');
          }
        }
      }
    }
    return Promise.reject(error);
  }
);

export default request;